﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using System.Data.SqlClient;
using GestorDeFlotasDesktop.Classes;
using GestorDeFlotasDesktop.AsignarChoferAuto;

namespace GestorDeFlotasDesktop.AsignarChoferAuto
{
    public partial class frmAsignarChoferAuto : Form
    {
        buscarTaxi formBuscarTaxi;
        buscarChofer formBuscarChofer;
        Chofer choferSeleccionado;
        Auto autoSeleccionado;

        public frmAsignarChoferAuto()
        {
            InitializeComponent();
            populateTurnos();
        }

        public void populateTurnos()
        {
            SqlInterface.Conectar();
            SqlDataReader ReaderTurnos = SqlInterface.ExecuteReader(
                "SELECT TURNO_CODIGO, TURNO_DESCRIPCION FROM SQUIRTLE.TURNO WHERE TURNO_HABILITADO=1", CommandType.Text);
            
            List<Turno> ListaTurnos = new List<Turno>();
            while(ReaderTurnos.Read())
            {
                Turno turno = new Turno();
                turno.intCodigo = ReaderTurnos.GetInt32(ReaderTurnos.GetOrdinal("TURNO_CODIGO"));
                turno.strDescripcion = ReaderTurnos.GetString(ReaderTurnos.GetOrdinal("TURNO_DESCRIPCION"));;
                ListaTurnos.Add(turno);
            }
            
            cmbTurno.DataSource = ListaTurnos;
            cmbTurno.DisplayMember = "strDescripcion";
            cmbTurno.ValueMember = "intCodigo";
            
            SqlInterface.Desconectar();
        }

        private void btnSeleccionar_Click(object sender, EventArgs e)
        {
            formBuscarTaxi = new buscarTaxi();
            formBuscarTaxi.parentFrame = this;
            formBuscarTaxi.ShowDialog(this);
        }

        public void RegistrarTaxi(Auto taxi)
        {
            txtTaxi.Text = taxi.strPatente;
            autoSeleccionado = taxi;
            formBuscarTaxi.Close();
        }

        public void RegistrarChofer(Chofer chofer)
        {
            txtChofer.Text = chofer.strApellido + ", " + chofer.strNombre;
            choferSeleccionado = chofer;
            formBuscarChofer.Close();
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnLimpiar_Click(object sender, EventArgs e)
        {
            txtTaxi.Text = string.Empty;
            txtChofer.Text = string.Empty;
        }

        private void btnSelectChofer_Click(object sender, EventArgs e)
        {
            formBuscarChofer = new buscarChofer();
            formBuscarChofer.parentFrame = this;
            formBuscarChofer.ShowDialog(this);
        }

        private void btnAceptar_Click(object sender, EventArgs e)
        {
            int result;
            List<SqlParameter> Parameters = new List<SqlParameter>();
            Parameters.Add(new SqlParameter("@chofer",choferSeleccionado.intDNI));
            Parameters.Add(new SqlParameter("@taxi",autoSeleccionado.intCodigo));
            Parameters.Add(new SqlParameter("@turno", cmbTurno.GetItemText(cmbTurno.SelectedValue)));
            Parameters.Add(new SqlParameter("@fecha",dtpFecha.Value));

            SqlInterface.Conectar();
            try
            {
                result = SqlInterface.ExecuteNonQuery("SQUIRTLE.spAsignarTaxiChofer", CommandType.StoredProcedure, Parameters);
            }
            catch (SqlException sqlEx)
            {
                MessageBox.Show(sqlEx.Message);
                SqlInterface.Desconectar();
                return;
            }
            if (result == -1)
                MessageBox.Show("La asignación no se ha realizado. Verifique los datos a intentelo nuevamente.");
            else
                MessageBox.Show("La asignación se ha realizado con éxito.");
            Parameters.Clear();
            SqlInterface.Desconectar();
        }
    }
}
